package com.autumn.xa.common.util;

import org.apache.commons.lang3.StringUtils;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * LocalDateTimeUtil
 *  * ClassName: LocalDateTimeUtil
 *  * Description:
 *  * Author: wangyu
 *  * Date: 2021-10-22 11:00
 *  * History:
 *  * <author>          <time>          <version>          <desc>
 *  * 作者姓名           修改时间           版本号              描述
 *  
 */
public class LocalDateTimeUtil {

    public static final String YYYY_MM_DD = "yyyy-MM-dd";
    public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";


    /**
     * string 转 LocalDateTime
     * @param time 时间字符串
     * @param format 格式 LocalDateTimeUtil.YYYY_MM_DD | LocalDateTimeUtil.YYYY_MM_DD_HH_MM_SS
     * @return
     */
    public static LocalDateTime parse(String time,String format){
        if (time == null) {
            // 非空判断 防止LocalDateTime.parse方法空指针
            return null;
        }
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        return LocalDateTime.parse(time, formatter);
    }

    /**
     * string 转 LocalDate
     * @param time 时间字符串
     * @param format 格式 LocalDateTimeUtil.YYYY_MM_DD | LocalDateTimeUtil.YYYY_MM_DD_HH_MM_SS
     * @return
     */
    public static LocalDate parseLocalDate(String time, String format){
        if (time == null) {
            // 非空判断 防止LocalDateTime.parse方法空指针
            return null;
        }
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        return LocalDate.parse(time, formatter);
    }

    /**
    * Description: localdatetime 转 string
    * @param time 时间
    * @param format 格式化 YYYY_MM_DD 或 YYYY_MM_DD_HH_MM_SS
    * @return: java.lang.String
    * @author: wangqiuyang
    * @Date: 2021/11/3 3:53 下午
    */
    public static String parseString(LocalDateTime time , String format) {
        if (time == null || format == null) {
            return null;
        }
        DateTimeFormatter df = DateTimeFormatter.ofPattern(format);
        return df.format(time);
    }

    /**
     * 处理转换传入时间为 YYYY-MM-dd类型的
     *
     * @param time 入参
     * @return LocalDataTime
     * @author xueguojie
     */
    public static LocalDateTime timeConversion(String time) {
        if (StringUtils.isBlank(time)){
            return null ;
        }
        time = time + " 00:00:00";
        DateTimeFormatter df = DateTimeFormatter.ofPattern(YYYY_MM_DD_HH_MM_SS);
        return LocalDateTime.parse(time, df);

    }

}
